package com.yy.blogdemo.utils;


import com.yy.blogdemo.domain.entity.User;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;

/**
 * JWT工具类
 */
public class JWTutils {

    /**
     * 过期时间
     */
//    static final long EPIRE = 60000 * 60 * 24 * 7;//一周
    static final long EPIRE = 60000 * 10;
    /**
     * 签名密钥，定期修改
     */
    private static  final String SECRET ="xdclass";
    /**
     * 令牌前缀
     */
    private static  final String TOKEN_PREFIX ="xdclass";
    /**
     * subject
     */
    private static final String SUBJECT="xdclass";

    /**
     * 根据用户信息，生成令牌（token）
     * @param user
     * @return
     */
    public static  String  geneJsonWebToken(User user){
        String token=Jwts.builder().setSubject(SUBJECT)
//                     .claim("headImg",user.getHeadImg()) //加密信息
//                     .claim("id",user.getId())
//                     .claim("name",user.getName())
                     .setIssuedAt(new Date())
                     .setExpiration(new Date(System.currentTimeMillis() +EPIRE))
                     .signWith(SignatureAlgorithm.HS256,SECRET).compact(); // 用HS256将信息和密码进行加密  compact返回字符串

        token=TOKEN_PREFIX+token;//加个前缀
        return token;
    }

    public static Claims checkJWT(String token){
        try {
            final  Claims claims = Jwts.parser().setSigningKey(SECRET).parseClaimsJws(token.replace(TOKEN_PREFIX,"")).getBody();
            return claims;
        } catch (Exception e) {
            return  null;
        }

    }

}

